Il sistema ad agenti mobili è composto da due moduli:
SOMA (Secure and Open Mobile Agent);
MARS (Mobile Agent Reactive Spaces).
 
 

Requisiti di sistema


JDK 1.2 beta 2
Cryptix 3.03 (pacchetto crittografico)
 
 

Topologia della rete in SOMA


Il sistema ad agenti mobili SOMA organizza logicamente la rete in Place e
Domini. Ogni nodo della rete è visto come Place, i Place sono raggruppati
in Domini. Ogni Dominio ha un Gateway che regola l'accesso dall'esterno ai
propri Place.

Nelle istruzioni di installazione e negli esempi proposti si assume che vi
siano due Domini, chiamati Dom1 e Dom2.
Dom1 è composto da un solo Place: Bach.
Dom2 è composto da due Place: Escher e Godel.
I tre Place sono ospitati dallo stesso host.

Gli archivi di installazione sono predisposti per questa configurazione:
per avviare il sistema occorre installare i sistemi SOMA e MARS su un
unico host. Nel caso si voglia cambiare la configurazione di default,
bisogna installare i sistemi su ogni host voluto e riconfigurare la
topologia della rete di SOMA.
 
 

Installazione


Installare i file di SOMA e di MARS a partire dalla HOME directory, per
mezzo dei comandi:
tar xf SOMA.tar
tar xf MARS.tar

Dovrebbero quindi essere presenti le seguenti directory:
$HOME/SOMA
$HOME/MARS
$HOME/Cryptix (se installato nella HOME directory)

Aggiornare il CLASSPATH:
export CLASSPATH=$HOME/MARS:$HOME/SOMA:
$HOME/Cryptix/classes/SPT_0-0-9.jar:
$HOME/Cryptix/classes/IJCE_0-0-11.jar:
$HOME/Cryptix/classes/RSA_0-0-9.jar
N.B.: la presenza della directory corrente "." nel CLASSPATH crea problemi
nel caso di ricompilazione di SOMA.

Aggiornare il file lib/security/java.security del JDK 1.2 nel seguente
modo:
policy.provider = AgentSystem.AgentPolicy
security.provider.2 = cryptix.provider.Cryptix
La prima riga indica nella classe AgentSystem.AgentPolicy il nuovo gestore
della politica di sicurezza. La seconda riga aggiunge il pacchetto Cryptix
alla lista dei fornitori degli algoritmi crittografici.
 

Per avviare il sistema (e gli esempi di prova) nella configurazione di
default, saltare i paragrafi di configurazione e passare ad Avvio del
sistema e ad Esempi.
 
 

Configurazione della topologia di SOMA


Ogni Place ha una propria directory sull'host nel quale è presente.

Nella configurazione di default sono presenti tre Place sullo stesso host,
per cui sono create le seguenti directory:
$HOME/SOMA/Bach
$HOME/SOMA/Escher
$HOME/SOMA/Godel

Inoltre, ogni directory di Place deve avere una sottodirectory "esterno",
in cui sono memorizzate le classi degli agenti caricate dinamicamente
attraverso il Class Loader.

La topologia è specificata nei file agentsX.net e DomainX.net, generati
dalle classi SetupX.java nella directory SOMA/Sets (dove l'X sta per il
numero del dominio).
I file agentsX.net contengono le informazioni su tutti i Place di un
Dominio e devono essere posti nelle directory di Place di ogni Place del
Dominio in questione. Deve essere inoltre posto nella directory SOMA
dell'host in cui è avviato il Gateway del Dominio.
I file DomainX.net contengono le informazioni su tutti i Domini presenti
nella rete. Una copia di DomainX.net deve essere posta nella directory
SOMA dell'host in cui è avviato il Gateway del Dominio X.

Per modificare la topologia è necessario modificare opportunamente i file
SetupX.java e distribuire i file *.net generati secondo le regole sopra
enunciate.
 
 

Configurazione della politica di sicurezza di SOMA


La politica di sicurezza è espressa su due livelli: la politica di Dominio
(o di default) e la politica di Place.
La politica di Dominio è contenuta in un file DefaultX.pol nella directory
SOMA dell'host in cui è avviato il Gateway del Dominio. La politica di
Place è contenuta in un file PolX.pol nella directory di Place.

Per esaminare e modificare le politiche di sicurezza di SOMA avvia il tool
AgentPolicyTool:
java AgentSystem.AgentPolicyTool
 
 

Configurazione degli strumenti crittografici di SOMA

Il file .keystore contiene le coppie di chiavi DSA per la firma digitale
degli agenti. Ogni utente ed ogni Place deve possedere la propria coppia
di chiavi.
Il file .RSAKeyStore contiene le coppie di chiavi RSA per la cifratura
degli agenti. Ogni Place deve possedere la propria coppia di chiavi.
Copie dei due file devono essere presenti in ogni directory di Place.

Per esaminare e modificare il file .keystore bisogna usare il tool di JDK
1.2 keytool. La password del .keystore è "keystorepassword".

Per modificare il file .RSAKeyStore bisogna usare AgentSystem.RSAKeyTool.
 
 

Avvio del sistema

Per avviare il Gateway di un Dominio:
java GateWay.GateMain agents1.net Domain1.net 5001 Default1.pol
dove i parametri rappresentano:


Per avviare un Place:
java AgentSystem.Main agents1.net 5555 5550 Dom1 Bach
$HOME/MAM2/Bach Pol1.pol .keystore .RSAKeyStore
dove i parametri rappresentano:


Una volta avviati tutti i Gateway e i Place si possono lanciare gli
agenti. Le classi degli agenti devono essere poste nella directory del
Place di partenza.

Per lanciare un agente:
java AgentSystem.Starter provaplace 5550 johndoe
dove i parametri rappresentano:

Il sistema richiede di inserire la password dell'utente, per poter firmare
a suo nome l'agente (Per l'utente "johndoe" la password è "jamesstewart").
La password è definita nel file .keystore. Per maggiori informazioni
consultare la documentazione del keytool del JDK.
 
 

Esempi


Avviare il registro RMI di Java:
 rmiregistry &

Per avviare il sistema nella configurazione di default eseguire il file
avvia.

Per lanciare gli agenti del primo esempio (ricerca di informazioni
distribuite) eseguire il file esempio1.

Per lanciare gli agenti del secondo esempio eseguire il file esempio2.

Per lanciare gli agenti del terzo esempio (prenotazione di un volo)
eseguire il file esempio3.
 
 

Compatibilità con JDK 1.2


SOMA è sviluppato in JDK 1.2 beta 2. Per la compatibilità con la versione
definitiva del JDK 1.2, vedere l'home page di SOMA:

http://www-lia.deis.unibo.it/Software/MA

Nel caso fosse disponibile una versione aggiornata di SOMA, bisogna
modificarla come descritto nel documento MODIFICA, per renderla funzionante
con il sistema MARS.
Per aggiornare MARS alla versione definitiva di JDK 1.2, vedere il documento
MARS-JDK.